package com.general.framework.example.factoryMethod;

import org.example.simpleFactoryPattern.ICourse;

/**
 * 工厂方法模式(Factory Method Pattern)是指定义一个创建对象的接口，但让实现这个接口的类来决定实例化哪个类，
 * 工厂方法模式让类的实例化推迟到子类中进行。
 * 在工厂方法模式中用户只需要关心所需产品对应的工厂，
 * 无须关心创建细节，而且加入新的产品时符合开闭原则。
 *
 * 工厂方法模式适用于以下场景：
 *  (1)创建对象需要大量重复的代码。
 *  (2)客户端（应用层）不依赖于产品类实例如何被创建、如何被实现等细节。
 *  (3)一个类通过其子类来指定创建哪个对象。
 * 工厂方法模式也有缺点：
 *  (1)类的个数容易过多，增加复杂度。
 *  (2)增加了系统的抽象性和理解难度。
 */
public interface ICourseFactory {
    ICourse create();
}
